In the current state of integrated circuit technology, configurable circuits are used in a number of different applications. For example, one well-known type of configurable circuits is a reconfigurable circuit, such as those that incorporate Field Programmable Gate Arrays (FPGAs). Such a configurable circuit is commonly used in emulation systems. However, because of their flexibility, configurable circuits are employed in many other applications other than in emulation systems. These other applications include their use in the fields of digital signal processing (DSP), medical imaging, computer vision, speech recognition, and so forth.
A configurable circuit typically includes a number of configurable functions that may be programmed and configured to behave and perform a variety of functions. In the case where the configurable circuit is a reconfigurable circuit, the circuit will also typically include a number of configurable interconnects (e.g., crossbar devices) that can be programmed to, among other things, selectively interconnect the input/outputs of the configurable functions. A configurable circuit will further include a configuration memory that is coupled to the configurable functions (and the configurable interconnects in the case of reconfigurable circuits) for storing configuration data that is used to configure the configurable functions (and the configurable interconnects).
From the time that a configurable circuit is first fabricated and assembled to the time that the configurable circuit is in the hands of the end-user, a configurable circuit will typically go through at least three phases. In the first phase, also known as the production phase, the configurable circuit is fabricated and assembled. The production phase is typically executed by the manufacturer of the circuit. Once the configurable circuit is built, the circuit is provided to an “application designer” or simply “designer.” Note that the demarcation between a manufacturer and a designer is sometimes murky and, in some instances, the manufacturer may also be the designer. In the second phase, the designer (or the manufacturer) will couple the configurable circuit to one or more external devices. In some circumstances, this may mean mounting the configurable device onto a printed circuit board (PCB) that may or may not be part of a multi-component device that the designer (or the manufacturer) is providing to the end-user. The designer (or the manufacturer) will want the configurable circuit to carry out some sort of desired application behavior and will thus provide the configuration data needed to configure the device in a manner such that the configurable circuit exhibits the desired application behavior. The provided configuration data is typically stored in the configuration memory of the configurable circuit if the memory is nonvolatile or in an external nonvolatile memory coupled to the configurable circuit. In the third phase, the configurable circuit is provided to the end-user as a stand-alone device or as part of a multi-component device. The end-user will then typically run the configurable circuit in accordance with the configuration data provided by the designer (or manufacturer).
The configuration data is usually the property of the designer (or the manufacturer), thus it is typically desirable to protect such data from reverse engineering. At least two approaches are currently being used to protect such data. A first approach consists in fully storing the configuration data on the configurable circuit and having a protection bit that prevents reading back the configuration data from the device. A second approach consists in asking the designer (or the manufacturer) to provide an encryption key, store it onto the configurable circuit, write a protection bit so that the key cannot be read back and encrypt the configuration data so that it can configure only configurable circuits that are provided with the encryption key. However, both approaches are less than desirable because they either require a configuration memory that is nonvolatile, which may not be possible for configurable circuits with large arrays, or they require that the designer (or manufacturer) take intrusive and often cumbersome measures.
Accordingly, a reconfigurable circuit that is able to protect configuration data without requiring intrusive measures is desirable.